/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Mercado.view;

import Mercado.controller.Relatorio_controller;
import Mercado.model.Cadastro;
import Mercado.model.Estoque;
import Mercado.model.Relatorio;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

/**
 *
 * @author rafael
 */
class Relatorio_Panel extends JTabbedPane{
    private Relatorio_controller controller;
    public JPanel graf1, graf2, pGerador;
    private Cadastro cad;
    private Estoque e;

    public Relatorio_Panel() {
    }

    public Relatorio_Panel(Cadastro cad, Estoque e) {
        controller = new Relatorio_controller(new Relatorio(cad),cad,e);
        this.cad = cad;
        this.e = e;
        this.setTabPlacement(this.BOTTOM);
        graf1 = aba_grafItens();
        graf2 = aba_grafClientes();
        pGerador = aba_gerador();
        this.addTab("Gráfico Vendas por Item",graf1);
        this.addTab("Grafico Melhores Clientes",graf2);
        this.addTab("Gerar Relatórios",pGerador);
    }

    private JPanel aba_grafItens() {
        JPanel aba = new JPanel();
        aba.setLayout(null);
        
        controller.atualizaItens(aba);
        
        aba.addComponentListener(new ComponentListener() {
            @Override
            public void componentResized(ComponentEvent e) {}

            @Override
            public void componentMoved(ComponentEvent e) {}

            @Override
            public void componentShown(ComponentEvent e) {;
                controller.setRel(new Relatorio(cad));
                controller.atualizaItens(aba);
            }

            @Override
            public void componentHidden(ComponentEvent e) {}
        });
        return aba;
    }
    
    private JPanel aba_grafClientes(){
        JPanel aba = new JPanel();
        aba.setLayout(null);
        controller.atualizaClientes(aba);
        aba.addComponentListener(new ComponentListener() {

            @Override
            public void componentResized(ComponentEvent e) {}

            @Override
            public void componentMoved(ComponentEvent e) {}

            @Override
            public void componentShown(ComponentEvent e) {
                controller.setRel(new Relatorio(cad));
                controller.atualizaClientes(aba);
            }

            @Override
            public void componentHidden(ComponentEvent e) {}
        });
        return aba;
    }

    /**
     * @param cad the cad to set
     */
    public void setCad(Cadastro cad) {
        this.cad = cad;
        controller.setCad(cad);
    }
    
    public void setE(Estoque e) {
        this.e = e;
        controller.setE(e);
    }

    private JPanel aba_gerador() {
        JPanel aba = new JPanel();
        aba.setLayout(null);
        JButton btRelEstq = new JButton("Gerar Relatório de Estoque");
        JButton btRelVenIt = new JButton("Gerar Relatório de Vendas por Item");
        JButton btRelVenCli = new JButton("Gerar Relatório de Vendas por Cliente");
        JButton btRel4 = new JButton("Gerar Relatório de Clientes Cadastrados");
        JButton btRel5 = new JButton("Gerar Relatório de Itens Preferidos de cada Cliente");
        JLabel lbAviso = new JLabel();
        
        btRelEstq.setBounds(10,10,600,25);
        btRelVenIt.setBounds(10,45,600,25);
        btRelVenCli.setBounds(10,80,600,25);
        btRel4.setBounds(10,115,600,25);
        btRel5.setBounds(10,150,600,25);
        lbAviso.setBounds(10,185,600,20);
        
        aba.add(btRelEstq);
        aba.add(btRelVenIt);
        aba.add(btRelVenCli);
        aba.add(btRel4);
        aba.add(btRel5);
        aba.add(lbAviso);

        btRelEstq.addActionListener(controller.evtBotao(aba));
        btRelVenIt.addActionListener(controller.evtBotao(aba));
        btRelVenCli.addActionListener(controller.evtBotao(aba));
        btRel4.addActionListener(controller.evtBotao(aba));
        btRel5.addActionListener(controller.evtBotao(aba));
        
        return aba;
    }
    
}
